Fractional delay digital filter

ABSTRACT

A device is presented for processing digital signals conveyed between a common port and many particular ports. The device includes a linear processing module. The module includes filters, which simultaneously apply a phase-shift and a chosen amplitude emphasis at each of the particular ports. The phase-shift is specific to each particular port, and the amplitude emphasis is substantially the same for all the particular ports. At the common port, the device also includes a common inversion filter, which performs inverse amplitude emphasis to the chosen amplitude emphasis.

This application claims priority under 35 U.S.C. §365(a) from International Application No. PCT/FR98/00615, filed Mar. 26, 1998, and published under PCT Article 21(2), on Oct. 8, 1998, in French, which is hereby incorporated by reference.

BACKGROUND OF THE INVENTION

1. Field of the Invention

The present invention concerns digital signal processing devices which perform fractional delay operations in a linear processing context.

The theory of such devices is well known. Conventionally, and as shown in FIG. 1, these devices comprise on the input side a row of finite impulse response interpolation filters each of which performs a fractional delay operation specific to each input signal.

Each finite impulse response interpolation filter is an approximation of an ideal fractional delay filter. The coefficients of the finite impulse response interpolation filters are calculated using either conventional methods which minimize the mean square error or the Lagrange method.

The delayed signals are then each subjected to specific linear processing, after which they are added. There are also similar devices using an arrangement which is the opposite of that just mentioned. In this case, the same input signal is duplicated to provide a plurality of signals identical to it, which signals are then subject to specific linear processing and a specific fractional delay operation. Such devices are used in voice coders employing fractional pitch resolution, for example.

2. Description of Related Art

FIGS. 1 to 3 show a prior art digital device in which M input signals u₁, u₂, . . . , u_(M) are delayed before they are subjected to linear processing by a filter T₁ through T_(M) and added by an adder S. This type of device is used in conventional applications, for example antenna processing, in which case the delays are chosen as a function of the antenna pointing angle.

The required delay r_(k) is rarely an integer multiple of the sampling period. The delay r_(k) therefore comprises an integer number of sampling periods to which a non-zero fraction τ of a period is added. Delays which are a multiple of the sampling period are not considered hereinafter because they are particularly simple to implement. The delays to be obtained are considered to consist of this additional fraction of a sampling period.

The device shown in FIGS. 1 to 3 is fed with M input signals u_(k) where k varies in the range from 1 to M. As shown in FIG. 1, each of the M input signals u_(k) is delayed by a fractional delay r_(k) specific to it.

A finite number of fractional delays r_(k) is therefore required. A highest common factor r_(o) of the fractional delays r_(k) can be found. In practice an interpolation filter is implemented for each multiple of r_(o) in the range from zero and the value of the sampling period T_(e). As shown in FIG. 2, D interpolation filters h_(i), denoted R₀, R₁, . . . , R_(D−1) are obtained in this way, producing delays of value ${\frac{i}{D} \times T_{e}},$

where i varies in the range from 0 to (D−1).

Because the same number L of coefficients is chosen for each filter, D filters h_(i)(n) are obtained, where i varies in the range from 0 to (D−1) and n varies in the range from 0 to (L−1).

As shown in FIG. 3, each input signal u_(k), where k varies in the range from 1 to M, is submitted to an interpolation filter h_(τk)(n), denoted RF_(k), which is one of the D filters h_(i)(n) denoted R_(i) in FIG. 2, i being in the range from 0 to (D−1).

The equations and the criteria used to calculate the coefficients h_(i(n)) of the D interpolations R₀ to R_(D−1) will now be summarized.

Let τ_(k) denote the normalized fractional delay value, that is to say $\tau_{k} = \frac{r_{k}}{T_{e}}$

where r_(k) is the required fractional delay for the signal and T_(e) is the sampling period.

Let u_(k)(n) be the input signal obtained by sampling an analog u_(k) ⁰(t). Assuming that the sampling was done correctly, it is theoretically possible to obtain the delayed digital signal, defined as the samples of the analog signals delayed by u_(k)(n), from u_(k) ⁰(t−τ_(k)T_(e)). The skilled person knows that from the signal u_(k)(n), all samples of which are known, the corresponding analog signal u_(k) ⁰(t) can be found using the interpolation equation ${u_{k}^{0}(t)} = {{\sum\limits_{m = {- \infty}}^{\infty}{{u_{k}(m)}\frac{\sin \left( {\pi \left( {\frac{1}{T} - m} \right)} \right)}{\left( {\frac{1}{T_{e}} - m} \right)}}} = {\sum\limits_{m = {- \infty}}^{\infty}{{u_{k}(m)}{{sinc}\left( {\frac{1}{T_{e}} - m} \right)}}}}$

in which case the delayed analog signal r_(k) is ${u_{k}^{0}\left( {t - r_{k}} \right)} = {{\sum\limits_{m = {- \infty}}^{\infty}{{u_{k}(m)}{{sinc}\left( {\frac{t - r_{k}}{T_{e}} - m} \right)}}} = {\sum\limits_{m = {- \infty}}^{\infty}{{u_{k}(m)}{{sinc}\left( {\frac{t}{T_{e}} - \tau_{k} - m} \right)}}}}$

The delayed digital signal u_(k) ^(ret)(n) is then obtained from:

u _(k) ^(ret)(n)=u _(k) ⁰(nT _(e) −r _(k))

that is: ${u_{k}^{rct}(n)} = {{\sum\limits_{m = {- \infty}}^{\infty}{{u_{k}(m)}{{sinc}\left( {n - \tau_{k} - m} \right)}}} = {{h_{{ideal},{\tau \quad k}}(n)}*{u_{k}(n)}}}$

where the symbol * symbolizes the convolution operation and where h_(ideal,τk)(n)=sinc (n−_(τk)).

The transfer function in the frequency domain of the filter h_(ideal,τk) is ${h_{{ideal},{\tau \quad k}}(f)} = {^{{- j}\quad 2\pi \quad \frac{f}{f_{e}}\tau_{k}}.}$

In theory, there is therefore an ideal filter h_(ideal,τk) enabling the delayed sampled signal to be obtained from the sampled signal u_(k).

A filter of this kind cannot be implemented in practice because:

the summation is infinite, and

the filter is non-causal, i.e. it would be necessary to know the future samples to calculate the result.

The non-causal aspect means that it is only possible to approximate a version having an additional constant delay τ₀ denoted h_(ideal,τ+τ0)(n).

In practice, and as shown in FIG. 3, a known process is used to obtain a filter h_(τ), having a finite number L of coefficients and constituting a good approximation of the filter h_(ideal,τ+τ0).

Finite impulse response filters are used in the most widespread applications. It is more difficult to design infinite impulse response filters and they require greater computation accuracy because the data is looped and computation errors can accumulate. Moreover, in a non-static environment, such as antenna processing, the long memory of the filters can be a problem: for example, it is difficult to change the pointing direction of an antenna suddenly.

All-pass filters, a subset of infinite impulse response filters, have the beneficial property of a constant modulus. The absence of amplitude error is unfortunately accompanied by an increased phase error compared to finite impulse response filters of the same complexity. To avoid these problems only finite impulse response filters are used.

Various methods are available for calculating the coefficients h_(τ)(n) of a finite impulse response filter h_(τ) approximating h_(ideal,τ+τ0).

When a finite number L of coefficients of the FIR filter has been chosen, a first method entails choosing a set of coefficients h_(τ)(n) with n varying in the range from 0 to (L−1) which minimizes the mean square error ∫|E_(τ)(f)|²df, where ${E_{\tau}(f)} = {{\sum\limits_{n = 0}^{L - 1}{{h_{\tau}(n)}^{{- j}\quad 2\pi \quad \frac{f}{f_{e}}\tau}}} - {H_{{ideal},{\tau + \tau_{0}}}(f)}}$

f_(e) being the sampling frequency and the integration being formed over a wanted frequency band.

E_(τ)(f) is often used to define cost functions used to assess the quality of a filter. This method is referred to as method M1. Its result is a truncated and delayed version of the ideal filter h_(M1,τ)(n)=sinc(n−τ₀−τ).

A second method entails first calculating the coefficients h_(τ)(n) using the previous method and then multiplying them by an apodization window w(n). This method is referred to as method M2. Its effect is to smooth the frequency response of the filter.

If h_(M1,τ)(n) are the coefficients of the filter obtained by the previous method, the coefficients h_(M2,τ)(n) are obtained from the equation h_(M2,τ)(n)=h_(M1,τ)(n)·w(n) where, for example, ${w(n)} = {0.54 - {0.46\quad {\cos \left( \frac{2\pi \quad n}{L - 1} \right)}{w(n)}}}$

is known as the Hamming window.

A third method entails adopting the set of coefficients h_(τ)(n) which minimize the generalized mean square error C_(τ)=∫W(f)|E_(τ)(f)|²df, where W(f) is a frequency domain weighting function which can be modulated iteratively to obtain a satisfactory function h_(M) ₃ _(τ)(n) and where the integration is performed over a wanted frequency band. This method is referred to as method M3. It yields a linear system of equations.

A fourth method entails adopting the coefficients h_(τ)(n) for which ${\left( {\frac{\delta^{m}{E_{\tau}(f)}}{\delta \quad f^{m}}} \right)_{f - 0} = 0},$

where m varies in the range from 0 to (L−1). This method is referred to as method M4. The coefficients h_(M4,τ)(n) are obtained from: ${h_{{M4},\tau}(n)} = {\prod\limits_{\underset{k \neq n}{k - 0}}^{L - 1}\quad \frac{\tau - k}{n - k}}$

Many examples and a comparison of infinite impulse response and finite impulse response filters can be found in an article in the IEEE signal processing magazine, January 1996, “Splitting the unit delay, tools for fractional delay filter design”, by Laakso, Välimäki, Karjalainen, Laine.

FIG. 3 shows that each input signal u_(k) is then submitted to a delayed filter h_(τ) _(i) (n), denoted RF_(k), where τ_(k) is the normalized delay specific to the signal u_(k) and is one of the values i/D where i varies in the range from 0 to (D−1).

The device shown in FIGS. 1 to 3 therefore performs delay operations on M signals with interpolation filters RF₁, . . . RF_(M) of length L, which represents C₁=M×L operations, where an operation is defined as a multiplication followed by an addition. Also, the memory needed to store the L coefficients of the D filters is C₂=D×L words.

Such devices are not totally satisfactory. If the number of signals to be delayed is large, the computation load C1 and the memory capacity C2 needed to store the coefficients of the interpolation filters are so large that they make the devices extremely costly to implement and therefore compromise their economic viability.

BRIEF SUMMARY OF THE INVENTION

The aim of the invention is to propose a digital processing device which performs the same processing with the same accuracy but with greatly reduced computation load and memory requirement.

The above aims are achieved in accordance with the invention by a device for processing digital signals conveyed between a common port and M particular ports including a linear processing module characterized in that it includes particular filters which apply at the same time a phase-shift and a chosen amplitude emphasis at each of the M particular ports, said phase-shift being specific to each particular port and the amplitude emphasis being substantially the same for all the particular ports, and in that it includes at said common port a common inversion filter which performs the inverse amplitude acceleration through said chosen amplitude emphasis.

According to the invention, the common port can be an input port or an output port.

BRIEF DESCRIPTION OF THE DRAWINGS

Other features, aims and advantages of the present invention will become apparent on reading the following detailed description with reference to the accompanying drawings, which are given by way of non-limiting example and in which:

FIG. 1 is a functional block diagram of a prior art digital system applying specific fractional delay and linear processing operations to input signals;

FIG. 2 shows the same device, emphasizing the fact that the fractional delay filters use incremental delays;

FIG. 3 shows the same device as FIG. 1, emphasizing the frequency domain transfer functions of the ideal delay filters approximated in this prior art device;

FIG. 4 is as functional block diagram of a digital processing device of the present invention;

FIG. 5 shows the same device as FIG. 4, emphasizing approximated target filters;

FIG. 6 shows a device of the invention similar to the device shown in FIGS. 4 and 5, including phase-shift filters with four coefficients;

FIG. 7 shows maximum differences between Moduli for several fractional delays;

FIG. 8 shows phase delays each including the phase of a filter and the sampling frequency;

FIG. 9 shows phase errors, and constitute another representation of the phase-shift;

FIG. 10 represents a prior art device for providing specific output signals, each resulting from linear processing followed by fractional delays followed by respective filters; and

FIG. 11 shows a digital processing device according to the present invention, in which ay single input signal is processes to produce several output signals similar to those obtained with the device of FIG. 10.

DETAILED DESCRIPTION OF THE INVENTION

FIGS. 4 and 5 show a device of the invention which processes M input signals u₁, . . . , u_(M) with the same result US as that produced by the device shown in FIGS. 1 to 3 and with the same computation accuracy.

In the above device, each of the M input signals u_(k) is passed first through a first phase-shift filter h_(τ) ^(d)(n) denoted FP_(k) in FIGS. 4 and 5.

The phase-shift filters FP₁, . . . FP_(M) are finite impulse response filters of length L₁, each approximating a target filter, and whose coefficients are calculated by a conventional method like the method M3 previously indicated. The target filters approximated in this way are not ideal delay filters as in the previous case. The target filters are defined in the frequency domain by ${H_{{target},\tau}(f)} = {{{H_{target}(f)}}^{{- j}\quad 2\pi \quad \frac{f}{f_{e}}{({\tau + \tau_{0}})}}}$

where (τ+τ₀) is the required non-integer normalized delay, being an additional constant delay equal to an integer number of sampling periods, and H_(target)(f) depends only on the frequency.

Hereinafter, the expression “normalized fractional delay” refers to the non-integer part of the normalized delay actually introduced.

The function |H_(target)(f)| is the same for all the phase-shift filters FP₁ to FP_(M). The function |H_(target)(f)| therefore introduces the same input amplitude emphasis in each input filter.

Each input signal u_(k), after passing through the phase-shift filter h_(τk) ^(d) denoted FP_(k) in FIGS. 4 and 5, corresponding to the required fractional delay τ_(k) for that signal u_(k), is subjected to linear processing TT(k) by a linear processing filter T_(k) specific to the input signal u_(k). The signals are then added.

Immediately downstream of this summation is an equalization filter of amplitude I, also referred to hereinafter as the common inversion filter. The role of the filter I is to perform the operation which is the inverse of the amplitude emphasis |H_(target)(f)| introduced by the phase-shift filters h_(τ) _(k) ^(d) denoted FP_(k). In a preferred embodiment of the invention, this is done by approximating a filter with the frequency domain transfer function ${H_{equal}(f)} = {\frac{1}{{H_{target}(f)}}.}$

In many cases, the main role of the device is to put a signal back into phase or noise into antiphase, to reinforce the wanted signal and reduce the noise. In these cases, the interrelationship of the phases and of the moduli of the different branches is important.

However, zero overall distortion is not always necessary. Also, the equalization filter I can be included in another filter which is required for other purposes, such as equalizing a transfer function, for example that of the sensors.

Here the common inversion filter I is an FIR filter. Its coefficients can be calculated by one of the methods M1 through M3 previously described, or by any conventional filter design algorithm.

A linear filter like thecommon inversion filter I produces the same effects on the output signal US whether it is applied to each of those signals on the upstream side of the summation S or to the summed signal.

The same processing is therefore applied to the signals between M input ports P₁ to P_(M) and the common output port C if a single common inversion filter I is placed after the summation S or if M filters identical to the common inversion filter I are placed upstream of the summation S.

We know that for a given input signal two linear filters in series supply the same output signal regardless of their order.

A common inversion filter like that shown in FIGS. 4 to 6 and previously described therefore has the same effects on the output signal US of the entire device whether it is placed just upstream or just downstream of each of the specific linear processing operations T₁ to T_(M).

Clearly, then, the common amplitude inversion filter I, placed downstream of the summation S, produces the same results as if M identical filters were placed between each particular phase-shift filter h_(τ) _(k) ^(d) denoted FP_(k) and the corresponding linear processing filter TT(k) denoted T_(k).

In the light of the above explanations, each combination of a phase-shifter filters FP_(k)/and a common inversion filter I as shown in FIG. 4 clearly therefore has the same effect on the output signal US as if each combination were contiguous at the location of each phase-shift filter FP_(k).

The transfer function of each of the contiguous pairs being equal to the product of the transfer functions of the phase-shift filter FP and the amplitude inversion filter I, each combination therefore constitutes a filter whose frequency domain transfer function is close to that of the ideal delay filter with transfer function ${{H_{{target},\tau}(f)}} = {^{{- j}\quad 2\pi \quad \frac{f}{f_{e}}{({\tau + \tau_{0}})}}.}$

In one embodiment of the invention, the inversion filter I can also be an infinite impulse response filter. Because the equalization filter or amplitude inversion filter I does not vary with time, there is no “non-static” problem in this case.

If L₁ denotes the number of coefficients of the phase-shift filters FP₁ to FP_(M) and L₂ denotes the number of coefficients of the equalization filter I, the device of the invention therefore performs C₁=M·L₁+L₂ operations, an operation being defined as a multiplication followed by an addition.

The device stores the coefficients of D filters of length L₁ and one filter of length L₂, which represents a memory volume of C₂=D·L₁+L₂ words.

The number M of input signals is in practice very large.

For a given reference fractional delay filter h_(τ)(n) the same phase-shift τ₁ to the sum of the signals.

If respective linear processing TT(1′), TT(1″), TT(1′″) is required for each input signal u₁′, u₁″, u₁′″, it is then necessary to place the linear processing filters T₁′, T₁″, T₁′″ upstream of the adder S₂, applied to each input signal u₁′, u₁″, u₁′″.

This produces a device in which there are no duplicated identical phase-shift filters. Thus the same operations are not performed at two different locations and the same set of coefficients is not stored twice.

A practical embodiment of a device of the kind shown diagrammatically in FIG. 6 will now be described.

In this numerical example, the wanted input signal frequency band is 0-7 kHz. The sampling period f_(e) is 16 kHz. The number D of filters to be implemented, also referred to as the resolution, is 20. The number of inputs is M=32. The length of the phase-shift filters is L1=4 coefficients and the length of the common inversion FIR filter is L₂=11 coefficients.

The four coefficients of each phase-shifter filter are calculated by the generalized least squares algorithm, or method M3, and the seven coefficients of the amplitude inversion filter by a conventional linear phase finite impulse response filter design algorithm. The coefficients of the filters are normalized for calculation on a 16-bit fixed point DSP. The coefficients are as follows:

i $\tau_{i} = \frac{i}{D}$

h_(i) (0) h_(i) (1) h_(i) (2) h_(i) (3) 0 0   14520 32767 14513  −19 1 0.05 13290 32697 15779  198 2 0.1  12089 32504 17067  449 3 0.15 10926 32189 18368  741 4 0.2   9806 31756 19672 1078 5 0.25  8737 31208 20968 1466 6 0.3   7723 30550 22246 1909 7 0.35  6769 29789 23494 2410 8 0.4   5878 28931 24703 2973 9 0.45  5052 27985 25861 3600 10  0.5   4293 26958 26958 4293

The values for i=11, . . . , 19 are calculated using a relationship of symmetry h_(i)(n)=h_(D−i)(L₁−1−n) in the present case where the additional delay τ₀ is equal to (L₁−2)/2.

This property will now be demonstrated:

An FIR filter of length L, can take non-zero values for n=0, . . . , L₁−1. The point at the center of the impulse response is therefore (L₁−1)/2. Delays close to this value are easier to obtain than others. This is why a preferred embodiment of the invention seeks to approximate a normalized ideal phase-shift of τ+τ₀ where τ₀ is fixed at (L₁−2)/2 and the normalized fractional delay τ varies in the range from 0 to 1, which gives a range of normalized delays that varies in the range from (L₁−2)/2 to L₁/2 and is symmetrical about the center (L₁−1)/2.

We also know that {tilde over (H)}(f)=H*(f)e^(−j2πf(L1−1))(where H*(f) is the complex conjugate of H(f)) if {tilde over (h)}(n)=h(L₁−1−n).

H_(τ)(f) approximates $\begin{matrix} {{{{H_{target}(f)}} \cdot {H_{{ideal},{\tau + {\tau \quad 0}}}(f)}} = \quad {{{H_{target}(f)}}^{{- {j2\pi}}\quad {f{({\tau + \tau_{0}})}}}}} \\ {= \quad {{{H_{target}(f)}}^{{- {j2\pi}}\quad {f{({\tau + {{({L_{1} - 2})}/2}})}}}}} \end{matrix}$

in which {tilde over (H)}_(τ)(f)=H*(f)e^(−j2πf(L1−1)) approximates $\begin{matrix} {{{{H_{target}(f)}} \cdot {H_{{ideal},{\tau + {\tau \quad 0}}}^{*}(f)}}^{{- {j2\pi}}\quad {f{({L_{1} - 1})}}}} & = & {\quad {{{{H_{target}(f)}} \cdot ^{{+ {j2\pi}}\quad {f{({\tau + \tau_{0}})}}}}^{{- {j2\pi}}\quad {f{({L_{1} - 1})}}}}} \\ \quad & = & {\quad {{{H_{target}(f)}} \cdot ^{{- {j2\pi}}\quad {f{({L_{1} - 1 - {{({L_{1} - 2})}/2} - \tau})}}}}} \\ \quad & = & {\quad {{{H_{target}(f)}} \cdot ^{{- {j2\pi}}\quad {f{({{{({L_{1} - 2})}/2} + 1 - \tau})}}}}} \\ \quad & = & {\quad {{{H_{target}(f)}} \cdot {H_{{ideal},{{({1 - \tau})} + {\tau 0}}}(f)}}} \end{matrix}$

so that {tilde over (H)}_(τ)(f) therefore approximates H_(1−τ)(f) and {tilde over (H)}_(1+τ)(f) approximates H_(τ)(f), whence h_(τ) is substantially equal to {tilde over (H)}_(1+τ)(f), in other words: of length L, the inventors have found after much work that it is possible to produce a combination of a phase-shift filter FP_(M) and an amplitude inversion filter I in which the phase-shift filter FP_(k) has a number L₁ of coefficients which is less than L, or even very small compared to L, and such that the computation accuracy of the combination of filters is similar to that of the reference filter h_(τ)(n).

A smoothed emphasis function |H_(target)(f)| which has low values at half the sampling frequency is preferably chosen for this purpose.

These functions |H_(target)(f)| are advantageously chosen from functions of the form ${{{H_{target}(f)}} = {X + {Y\left( {1 + {\cos \left( \frac{2\pi \quad f}{f_{e}} \right)}} \right)}}},$

the ratio X/Y preferably being in the range from 0 to 0.3.

To normalize the value of |H_(target)(f)| at f=0, X and Y preferably satisfy the condition X+2Y=1.

A preferred choice of the function |H_(target)(f)| is ${{H_{target}(f)}} = {0.06 + {0.47{\left( {1 + {\cos \left( \frac{2\pi \quad f}{f_{e}} \right)}} \right).}}}$

With this function |H_(target)(f)|, the coefficients of the filters are advantageously calculated by method M3 and the function ${{W(f)} = {{1\quad {for}\quad f} < {\frac{6}{16}f_{e}}}};$ ${{W(f)} = {{5\quad {for}\quad \frac{6}{16}f_{e}} \leq f < {\frac{7}{16}f_{e}}}};$ ${W(f)} = {{0.01\quad {for}\quad f} > {\frac{7}{16}{f_{e}.}}}$

Thus L₁<L, or even L₁<<L and M>>1, which implies:

M·L ₁ +L ₂ <<M·L and D·L ₁ +L ₂ <<D·L.

The computation load and the memory volume needed are therefore very small.

The computation load and the volume of memory needed can be made smaller if, as shown in FIG. 4, input signals u₁′, u₁″, u₁′″ are to be delayed with the same fractional delay τ₁.

An adder S₂ to sum the signals is then placed on the upstream side of a phase-shift filter FP₁ which applies h_(τ)(n)=h_(1−τ)(L₁−1−n) regardless of the value of n in the range from 0 to L₁−1.

This relationship of symmetry means that only the coefficients of half the necessary filters have to be stored in memory.

It is sufficient to store, as in the example explained here, the coefficients of the filters h_(τ) corresponding of normalized delays (τ+τ₀) in the range from $\frac{\left( {L_{1} - 2} \right)}{2}\quad {to}\quad {\frac{\left( {L_{1} - 1} \right)}{2}.}$

The filters h₁T corresponding to normalized delays 1−τ+τ₀ symmetrical to those delays τ+τ₀ about (L¹⁻1)/2 are deduced using the relationship of symmetry h_(τ)(n)=h_(1−τ)(L₁−1−n). In this way, for two phase-shift filters whose respective normalized fractional delays are symmetrical about a fractional delay equal to half the sampling period, the coefficients of one of the two filters are deduced from those of the other one using the abovementioned relationship.

For the finite impulse response amplitude inversion filter, we obtain for h_(equal)(n) varying in the range from 0 to L₂−1=10: −217, 747, −2914, 8225, −18117, 32767, −18117, 8225, −2914, 747, −217.

If the phase must not be strictly linear, a third order infinite impulse response filter can be used with L2=7 coefficients whose zeros are: −0.655 and 0.0016±0.0383i, and whose poles are: −0.7089 and −0.5891±0.2122i. This filter is calculated using the well-known Yule-Walker algorithm, for example.

The new structure is equivalent to a conventional structure with interpolation filters h_(total), where h_(total)(n)=h_(i)(n)*h_(equal)(n), * being the convolution operation.

In the case of the above device, the computation load is therefore C₁=M·L₁+L₂=32×4+7=135 operations and the memory required is C₂=D·L₁+L₂=20×4+7=87 words. FIG. 6 shows the structure of this filter in the form of a functional block diagram.

In the case of antenna processing, the delays R_(i) with i varying in the range from 1 to M, for example, are chosen as a function of the antenna pointing angle.

The delays are then normalized and quantized. This yields the integer parts di and the fractional parts r_(i) of the normalized delays: ${r_{{nq} \cdot i} = \frac{{round}\left( {D \cdot {Ri} \cdot f_{e}} \right)}{D}},$

d_(i)=floor(r_(nq·i)) and r_(i)=r_(nq·i)−d_(i), where the round and floor fractions are respectively the integer approximation and integer part functions.

The resulting digital device has been compared with a prior art filter like that shown in FIGS. 1 to 3, in which the coefficients of the fractional delay filters were calculated using:

method M1 and L=20 (C1=640 operations, C2=400 words),

method M2 with a Hamming window and L=18 (C1=576, C2=360),

method M2 with a Blackman window and L=24 (C1=768, C2=480),

method M3 with L=12 and W(f)=1 in the wanted band 0-7 kHz (C1=384, C2=240),

method M3 with L=13 and W(f)=1 in the wanted band 0-7 kHz (C1=416, C2=260),

method M4 with L=30 (C1=960, C2=600).

The results obtained with a device of the invention are also shown, in which device the phase-shift filters have six coefficients and the filters are calculated using the same methods as for the filter of the invention with four coefficients previously described.

The ideal filters have a phase φ which increases linearly with the frequency f. The fraction $\frac{- \phi}{\left( {2\pi \quad f} \right)},$

referred to as the “phase delay”, is therefore constant in the ideal case.

FIG. 7 shows the maximum differences between the moduli, i.e. max_(τ) ₁ _(τ) ₂ (||H_(τ) ₁ (f)|−|H_(τ) ₂ (f)||) for D=20 fractional delays.

It enables the quality of the phase-shift filters of the new method to be assessed. The amplitude inversion filter does not modify the difference between the moduli, i.e. the same results are obtained for H_(total)(f)=H_(τ) ^(d)(f)H_(equal)(f) and for H_(τ) ^(d)(f) alone. This figure can therefore be used to assess the quality of the phase-shift filters H_(τ) ^(d).

The order of the other filters has been chosen to obtain a maximum amplitude error of around 1 dB, which corresponds to a factor of 1.12. In the worst case scenario, there is therefore a risk of having a residue due to the amplitude error of 0.12 (−18 dB) instead of cancellation for destructive interference.

It can be shown that the performance of all the filters is excellent for low frequencies up to 6 kHz, except for method M1. The maximum error is always at the maximum frequency of 7 kHz. The two examples of the new method have the lowest maximum error. The overall performance is satisfactory for the filter with four coefficients and excellent for the filter with six coefficients, which shows the better results from all the filters.

FIG. 8 shows the phase delays ${{- \frac{\phi_{\tau}(f)}{2\pi \quad f}}f_{e}},$

where φ_(τ)(f) is the phase of the filter h_(τ) ^(d) and f_(e) is the sampling frequency. It is difficult to assess the quality of the phase from this figure because errors at low frequencies are emphasized by the denominator and because it is not easy to compare two methods. It is included here to show that a filter of even length can be exact for the phase for integer and integer-and-a-half delays (referred to as linear phase filters) whereas an odd length filter cannot be exact for an integer-and-a-half delay. This is the main reason why filters of odd length are rarely used.

FIG. 8 also shows that at the maximum frequency the delays tend towards integer values except for the integer-and-a-half delay. This behavior is due to the fact that the discrete Fourier transform of a real sequence is always real at the maximum frequency. It follows from this that the phase is zero or π or undefined because the modulus is zero. This explains why the phase of the filters departs from the target value at high frequencies.

FIG. 9 shows the phase error [(φ_(τ)(f)−φ_(τ,ideal)(f)], in other words this is another representation of the phase-shift. It is well suited to comparing the quality of the phase of the filters. The greatest phase errors still occur at the maximum wanted frequency of 7 kHz. The filter with four coefficients is subject to slightly greater phase error than most other filters. On the other hand, the new method has the smallest two maximum errors.

FIG. 9 can also be used to assess the accuracy with which the delay must be quantified. There is no benefit in storing a large number of filters if the filters are insufficiently accurate. At the maximum frequency, a delay of one sample corresponds to a phase-shift of 180°. Given the maximum phase error of approximately 3°, it is therefore reasonable to store more than 60 filters so that the delay quantizing error is less than the error introduced by the filter. Performance is degraded if the available memory is unable to store this many filters. This situation can arise in typical real time environments, for example in respect of the internal memory of a DSP. In this case, the new structure produces better results with low complexity.

Lagrange filters have excellent performance at low frequencies but the number of coefficients increases rapidly with the wanted frequency band. To obtain good behavior in the 0-7 kHz band, an excessive number of coefficients is required.

In the worst case scenario (excluding Lagrange), the maximum phase difference is equal to 7°, which yields the same residual error of 0.12 (−18 dB) as that due to the amplitude error.

Thus even the critical situation of destructive interference can be processed with only four operations per input and four coefficients to be stored for each fractional delay. Comparison with conventional interpolation filters (methods M1 to M3) show that the following can be obtained simultaneously:

a reduction of the computation load by a factor in the range from 3 to 8,

a reduction in the memory requirement by a factor in the range from 3 to 8,

with a smaller maximum error and good overall performance.

Because the interpolation is often the most costly processing operation, the method is particularly suitable for forming lobes for antenna processing. The figures with L1=6 show that this method is also very effective for applications that demand a very high accuracy.

Note that the above two examples of filters cover most existing applications of fractional delay filters.

It is rare to need delay filters having less than four coefficients and there is rarely a need for an accuracy better than that obtained with the second example, for which L₁=6.

The remainder of the description covers one embodiment of a digital filter of the invention and conforming to that described above, in which the parameters L₁, L₂ and D are respectively equal to 4, 19 and 60. This example is given by way of illustration only, in the form of a program written in C. The coefficients of the filter routine 1.C were calculated in advance using the previously mentioned functions |H_(target)(f)| and W(f).

The purpose of the prior art device shown in FIG. 10 is to provide M specific output signals V_(k) (with k varying in the range from 1 to M) each resulting from linear processing TT(k) performed by a filter T_(k) followed by a fractional delay formed by a filter RF_(k), based on the same input signal VE.

This problem arises in fractional pitch resolution voice coders, for example. Several voice coders use the following equations to determine the pitch P: $\begin{matrix} {{x = \left( {{x(n)},{x\left( {n - 1} \right)},\ldots \quad,{x\left( {n - N + 1} \right)}} \right)},} \\ {y = \left( {{x\left( {n - P} \right)},{x\left( {n - P - 1} \right)},\ldots \quad,{x\left( {n - P - N + 1} \right)}} \right)} \\ {P = {{argmax}\frac{\langle{x,y}\rangle}{{y}^{2}}}} \end{matrix}$

To obtain a fractional resolution of the pitch P, the signal x must be delayed by a fractional delay.

As shown in FIG. 10, the device includes on the input side a device D which first duplicates the input signal VE in the form of M signals VE′ identical to it, after which each of the signals VE′ is passed through a linear processing filter T_(k) applying linear processing TT(k), followed by a fractional delay filter RF_(k) introducing a fractional delay r_(k).

FIG. 11 shows a digital processing device of the present invention in which a single input signal VE is processed to produce M output signals V₁ to V_(M) similar to those obtained with the device from FIG. 10. The components are similar to those of the device shown in FIGS. 4 to 6, that is to say phase-shift filters h_(τ) _(k) ^(d)(n) denoted FP₁, FP₂, . . . , FP_(M), where k varies in the range from 1 to M, linear processing filters T_(k), where k varies in the range from 1 to M, and an amplitude inversion filter I.

The amplitude inversion filter I applies amplitude pre-emphasis to the input signal VE. To be more precise, the transfer function of the filter I has a non-constant modulus and a zero phase. The resulting signal VE″ is then duplicated by a device D to produce M identical signals VE′″. Each of the signals VE′″ is subjected to specific linear processing TT(k) (with k varying in the range from 1 to M) by a filter T_(k) and is then passed through a specific phase-shift filter h_(τ) _(k) ^(d) denoted FP_(k).

Each phase-shift filter FP_(k) is an approximation of a target filter whose transfer function has the following features:

Its phase is close to that of the ideal fractional delay filter introducing the delay r_(k) required for the output signal, i.e. its phase is close to −2πr_(k)f.

Its modulus is the inverse function of the modulus of the amplitude inversion I on the input side of the device. As in the device shown in FIGS. 3 and 4, the amplitude inversion filter clearly has the same effect as if it were applied to each duplicated signal just upstream of the phase-shift filters h_(τ) _(k) ^(d) denoted FP_(k), with k varying in the range from 1 to M.

In FIG. 10, as in FIGS. 1 and 2, the computation load is C₁=M·L operations. For the same reasons, D filters of length L are stored, i.e. C₂=D×L words in memory, whereas in the case of the device from FIG. 11 the computation load is C₁=M·L₁+L₂ operations and the memory required is D·L₁+L₂ words, where L₁ is the length of the phase-shift filters and L₂ is the length of the amplitude inversion filter.

In the same manner as previously, an amplitude pre-emphasis filter I/phase-shift filter FP_(k) combination having the same performance as a fractional delay filter RF_(k) of length L can be obtained in which the length L₁ of the phase-shift filter FP_(k) is less than, or even very small compared to, the length L of the delay filter RF_(k). The device shown in FIG. 11 then produces the same result with the same accuracy as the device from FIG. 10 and with a greatly reduced computation load and memory requirement.

Of course, the invention is not limited to the embodiments described. It encompasses any variant in accordance with the spirit of the invention.

In particular, the common amplitude emphasis filter I can also be used to equalize a transfer function, for example that of a sensor.

More generally, the invention is not limited to interpolation filters but can be used for other linear processing with either a large number of inputs or a large number of outputs.

Program in C main.c program page 1 /* application to beamforming algorithm */ #include “cons.h” #include <stdio.h> #include <math.h> /* antenna geometrie */ const float xposition[] = {0,.1,.2,.3,.4,.5,.6,.7,.8,.9}; const float xmin=0; const float xmax=.9; /* filter1 for phase shift introducing amplitude distortion */ /* filter2 for amplitude egalisation */ long filter1 (short*, int, struct delay*, float*); int filter2(long*) struct delay *calcdelay(float,int); int main(int argc, char*argv[]) { /************************************************/ /* declaration */ struct delay *del; /* integer and fract. part*/ char *infile,*outfile,*parfile; /* file names */ int i,m; /* loop variables */ int delmax,base; /* max. delay, address offset */ int neof, /* not_end_of file */ long out1; /* output filter 1 */ short out2; /* output filter 2 */ float phi /* steering angle */ float shaping[M]; /* microphone weighting */ short indata[INBUFFER] [M]; /*input buffer */ long outdata[L2]; /* buffer for second filter */ FILE *infpt,*outfpt,*parfpt; /*file pointer */ /************************************************/ /* get command line parameters infile, outfile, parameter file*/ if (argc!=4) { printf(“use frac in_file out_file parameter_file\n”) return(−1 ); } infile=argv[1];outfile=argv[2]; parfile=argv[3]; infpt=fopen(infile, “rb”) ;outfpt=fopen(outfile, “wb”);parfpt=fopen (parfile,rb”); if ((infpt==NULL) | (outfpt==NULL) | (parfile==NULL)) { printf(“unable to open input or output or parameter file”); return(−2); } /************************************************/ /* maximum delay */ delmax =(int) ((xmax-xmin) *Fs/c); if (delmax+L1 >INBUFFER) { printf(“Input Buffer too small”); return(−3); } main.c program page 2 /************************************************/ /* get multiplexed input data from infile and put into indata */ fread(indata,M*sizeof(short),(delmax+L1),infpt); base=delmax+LI; /************************************************/ /* main loop for each sample */ for (neof= 1;neof>0;) { /* read input data and steering parameters */ base=( (base+1)%INBUFFER); fread(&indata[base] [0],M*sizeof(short),1,infpt) neof=fread(&phi,sizeof(float),1,parfpt) fread(shaping,sizeof(float),M,parfpt); /* compute integer and fractionnal delay for each microphone */ del=calcdelay(phi,delmax); /* beamforming by delay-weighting-sum */ out1=filter1(&indata[0] [0],base,del,shaping); /* the second filter shift loop */ for (i=O;i<L2−1;i++) outdata [i]=outdata1 [i+1]; outdata{L2− 1)=out 1; out2=filter2(outdata); fwrite(&out2,sizeof(short),1,outfpt); } return(0); } filter1.c program page 1 /* performs delay - weighting - sum beamforming */ /* Wolfgang Tager, 28.10.96 */ #include “cons.h” #include “math.h”  float abs(float); /* since default is int */  long filter1(short indata[INBUFFER] [M],int base,struct delay  *del,float shaping [M])  } static int f1coeff[RESOL] [L1] = { {14520 ,32767 ,14513 ,−19}, {14108 ,32757 ,14932 ,50}, {13697 ,32734 ,15354 ,122}, {13290 ,32697 ,15779 ,198}, {12886 ,32646 ,16206 ,277}, {12486 ,32582 ,16636 ,361}, {12089 ,32504 ,17067 ,449}, {11697 ,32412 ,17500 ,541}, {11309 ,32307 ,17934 ,639}, {10926 ,32189 ,18368 ,741}, {10547 ,32058 ,18803 ,848}, {10174 ,31913 ,19238 ,960}, {9806 ,31756 ,19672 ,1078}, {9444 ,31586 ,20106 ,1202}, {9087 ,31403 ,20538 ,1331}, {8737 ,31208 ,20968 ,1466}, {8392 ,31001 ,21397 ,1607}, {8055 ,30781 ,21823 ,1755}, {7723 ,30550 ,22246 ,1909}, {7398 ,30308 ,22666 ,2069}, {7080 ,30054 ,23082 ,2236}, {6769 ,29789 ,23494 ,2410}, {6465 ,29514 ,23902 ,2590}, {6168 ,29228 ,24305 ,2778}, {5878 ,28931 ,24703 ,2973}, {5596 ,28625 ,25095 ,3174}, {5320 ,28310 ,25481 ,3384}, {5052 ,27985 ,25861 ,3600}, {4792 ,27651 ,26234 ,3823}, {4539 ,27309 ,26600 ,4054}, {4293 ,26958 ,26958 ,4293}, {4054 ,26600 ,27309 ,4539}, {3823 ,26234 ,27651 ,4792}, {3600 ,25861 ,27985 ,5052}, {3384 ,25481 ,28310 ,5320}, {3174 ,25095 ,28625 ,5569}, {2973 ,24703 ,28931 ,5878}, {2778 ,24305 ,29228 ,6168}, {2590 ,23902 ,29514 ,6465}, {2410 ,23494 ,29789 ,6769}, {2236 ,23082 ,30054 ,7080}, {2069 ,22666 ,30308 ,7398}, {1909 ,22246 ,30550 ,7723}, {1755 ,21823 ,30781 ,8055}, {1607 ,21397 ,31001 ,8392}, {1466 ,20968 ,31208 ,8737}, {1331 ,20538 ,31403 ,9087}, {1202 ,20106 ,31586 ,9444}, {1078 ,19672 ,31756 ,9806}, {960 ,19238 ,31913 ,10174}, {848 ,18803 ,32058 ,10547}, {741 ,18368 ,32189 ,10926}, {639 ,17934 ,32307 ,11309}, {541 ,17500 ,32412 ,11697}, {449 ,17067 ,32504 ,12089}, {361 ,16636 ,32582 ,12486}, {277 ,16206 ,32646 ,12886}, {198 ,15779 ,32697 ,13290} {122 ,15354 ,32734 ,13697} {50 ,14932 ,32757 ,14109} }; filter1.c program page 2 long filtout, /* integer calculation for fast exact results no overflow for a single microphone since sum_over_i(abs(f1 coeff[r] [i]))<65536 */ float sumout=O; int m,i,firstel; /*loop counters, first element for fract. filter*/ /*********************************************/ /* delay - weighting - sum */ for (m=O;m<M;m++) { filtout=O, firstel=base-del[m] .integer, /* integer delay compensation */ for (i=O;i<L1;i++) filtout+=f1coeff[del[m] .frac][i]*indata [(firstel- i+INBUFFER)%INBUFFER] [m]; sumout=sumout+shaping [m]*filtout; } /*********************************************/ /* normalisation and saturation if necessary (does not occur if sum(abs(shaping))<M */ sumout=(sumout/M); sumout=sumnout/(11<<16); if (abs(surnout)>32767) { printf(“\nsumout filter 1 exceeds 16 bits: %f ”,sumout); printf(“\nlimited to saturation value ”); if (sumout>O) sumout=32767; else sumout=−32767; end getchar(); } return( (long) sumout ); } calcdelay.c, filter2.c and cons.h programs /* calculate integer and fractionnal delay for plane wave */ /* impinging on a linear array under an angle phi */ /* can be adapted to other arrays and/or nearfield equations */ /* wolfgang Tager, 28.10.96 */ #include “cons.h” #include <math.h> #include <stdio.h> struct delay *calcdelay(float phi,int delmax) { extern float xposition[]; extern float xmax; static struct delay del [M]; int m; float tmp; for (m=0;m<M;m++) { tmp=delmax- (xmax-xposition[m])*cos(phi)*Fs/c + .5 /RESOL; del[m] .integer=(int) tmp; del *[m] .frac=(int) (RESOL* (tmp-del 8 m] .integer)); } return del; } /* amplitude egalisation filter */ /* wolfgang Tager, 28.10.96 */ #include “cons.h” int filter2(long* outdata) { static int f2coeff[L2]= { −30,66,−189,512,−1246,2760,−5649, 10760,−19311,32767,−19311, 10760,−5639,2760,−1246,512,−189,66,−30}; char shift=17; /* sum(abs(f2coeff)) < 2{circumflex over ( )}17*/ int i; float filtout=0; for (i=0,i<L2;i++) filtout+=f2coeff[i]*outdata[i] return( (int) (filtout/ (I1<<shift) ) ); } #define M 10 #define INBUFFER 1000 #define RESOL 60 #define L 1 4 #define L2 19 #define Fs 8000 #define c 340 struct delay { int integer, int frac; }; 

What is claimed is:
 1. A device for processing digital signals conveyed between a common port (C) and a plurality of M ports (P₁, . . . , P_(M)) including a linear processing module (T₁, . . . , T_(M)), characterized in that said device includes particular a plurality of filters (FP₁, . . . , FP_(M)) which simultaneously apply a phase-shift and a chosen amplitude emphasis at each of the plurality of M ports (P₁, . . . , P_(M)), said phase-shift being specific to each of said plurality of ports (P₁, . . . , P_(M)) and the amplitude emphasis being substantially the same for all of said plurality of ports (P₁, . . . , P_(M)) and in that said device includes at said common port (C) a common inversion filter (I) which performs the inverse amplitude emphasis to said chosen amplitude emphasis.
 2. A device according to claim 1, characterized in that the common port (C) is a port for receiving an input signal (VE) and in that the plurality of M ports (P₁, . . . , P_(M)) are ports for transmitting a plurality of output signals (V₁, . . . , V_(M)).
 3. A device according to claim 1, characterized in that the plurality of M ports (P₁, . . . , P_(M)) are ports for receiving a plurality of input signals (U₁, . . . , U_(M)) and in that the common port (C) is a port for transmitting an output signal (US).
 4. A device according to claim 1, characterized in that each of the plurality of M filters (FP₁, . . . , FP_(M)) has a frequency domain transfer function which approximates a function whose phase is 2πfr where f is the frequency and r is a delay having a fractional part specific to each of the plurality of ports (P₁, . . . , P_(M)).
 5. A device according to claim 1, characterized in that each of the plurality of M filters (FP₁, . . . , FP_(M)) has a frequency domain transfer function whose modulus approximates an amplitude emphasis function which is a smoothed function having low values around half the sampling frequency of said signals.
 6. A device according to claim 1, characterized in that each of the plurality of M filters (FP₁, . . . , FP_(M)) has a frequency mode transfer function whose modulus approximates an amplitude function |H_(target)(f)| of the form: ${{H_{target}(f)}} = {X + {Y\left\lbrack {1 + {\cos \left\lbrack \frac{2\pi \quad f}{f_{e}} \right\rbrack}} \right\rbrack}}$

where the ratio X/Y is in the range from 0 to 0.3.
 7. A device according to claim 6, wherein X is taken as equal to 0.06 and Y is taken as equal to 0.47.
 8. A device according to claims 1, characterized in that the linear processing module includes particular a plurality of linear processing filters (T₁, . . . , T_(M)) adjacent said plurality of filters (FP₁, . . . , FP_(M)).
 9. A device according to any one of claims 4 to 8, characterized in that the plurality of M ports (P₁, . . . , P_(M)) are ports for receiving a plurality of input signals (U₁, . . . , U_(M)) and in that the common port (C) is a port for transmitting an output signal (US), and in that the device includes a device (S) for summing signals on the input side of the common inversion filter (I).
 10. A device according to claim 9, characterized in that the linear processing module includes a plurality of linear processing filters (T₁, . . . , T_(M)) adjacent said plurality of filters (FP₁, . . . , FP_(M)), and in that the summing device (S) is directly downstream of each of said plurality of linear processing filters (T₁, . . . , T_(M)).
 11. A device according to any one of claims 4 to 8, characterized in that the common port (C) is a port for receiving an input signal (VE) and in that the plurality of M (P₁, . . . , P_(M)) are ports for transmitting a plurality of output signals (V₁, . . . , V_(M)) and in that the device includes a device (D) for duplicating a signal into a plurality of signals identical to the signal downstream of the common inversion filter (I).
 12. A device according to claim 11, characterized in that the linear processing module includes a plurality of linear processing filters (T₁, . . . , T_(M)) adjacent said plurality of filters (FP₁, . . . , FP_(M)) and in that the device (D) for duplicating a signal into a plurality of signals identical to the signal is directly upstream of each of said plurality of linear processing filters (T₁, . . . , T_(M)).
 13. A device according to claim 1, characterized in that the common inversion filter (I) is a finite impulse response filter.
 14. A device according to claim 1, characterized in that the common inversion filter (I) is an infinite impulse response filter.
 15. A device according to claim 1, characterized in that each of the plurality of filters (FP₁, . . . , FP_(M)) has the same number of coefficients L₁.
 16. A device according to claim 15, characterized in that, for two particular filters h₁ and h₂ whose respective normalized fractional delays are symmetrical about a delay equal to half the sampling period, the coefficients h₁(n) of only one of the two filters are stored in memory, the coefficients h₂(n) of the other filter being deduced from the equation h₂(n)=h₁(L₁−1−n), n varying in the range from 0 to (L₁−1).
 17. A device according to claim 9, characterized in that additional summing devices (S₂) are provided upstream of selected ones of said plurality of filters (FP₁, . . . , FP_(M)), each receiving a plurality of input signals to be delayed by the same fractional delay, so that the device has no duplicated identical filters among the plurality of filters (FP₁, . . . , FP_(M)). 